package oas.db;

import oas.domain.Attendance;
import oas.domain.User;
import oas.web.PaginationSupport;

import java.util.Date;

/**
 * 
 * @author Dzq
 *
 */

public interface AttendanceRepository {
	
	/**
	 * 添加一个签到记录
	 * @param attendance
	 * @return
	 */
	Attendance save(Attendance attendance);
	
	/**
	 * 查找指定页面大小下某一页的数据
	 * @param pageNo
	 * @param pageSize
	 * @param user
	 * @return
	 */
	PaginationSupport<Attendance> findPage(int pageNo, int pageSize, User user);
	
	/**
	 * 个人考勤记录的总数
	 * 
	 * @param user
	 * @return 个人考勤记录的总数
	 */
	long count(User user);
	
	long countByUserName(User user);

	long countAll();

	/**
	 * 根据id查找考勤记录
	 * @param id
	 * @return 考勤记录
	 */
	Attendance findById(Long id);
	
	PaginationSupport<Attendance> findUsersAttendancesPage(int pageNo, int pageSize, String userName, Date startDate, Date endDate);

	/**
	 * 查看该用户今天是否已签到
	 *
	 * @param user 签到用户
	 * @param today 今天
	 * @return 是否已签到
	 */
	boolean findTodayAttendance(User user, Date today);
}
